package com.cykj.pos.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cykj.common.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 商户基本信息对象 biz_merchant_info
 *
 * @author xuxiaolong
 * @date 2022-08-09
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
@TableName("biz_merchant_info")
public class BizMerchantInfo implements Serializable {

    private static final long serialVersionUID=1L;


    /** 主键 */

    @TableId(value = "id")
    private Integer id;

    /** $column.columnComment */
    @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()")
    private Long merchId;

    /** $column.columnComment */
    @Excel(name = "费率id")
    private Integer feeId;

    /** posp商户编号 */
    @Excel(name = "乐刷商户编号")
    private String merchantId;

    @Excel(name = "费率")
    @TableField(exist = false)
    private String feeValue;
    /** 自身sn */
    @Excel(name = "poscode")
    private String posCode;

    /** 审核状态
     * 商户审核状态,
     * -2:商户不存在
     * -1:待完善资料，
     * 0：待审核，
     * 1：审核失败，
     * 2：人工审核，
     * 3：审核成功
     * */
    @Excel(name = "审核状态",readConverterExp ="-2=商户不存在,-1=待完善资料,0=待审核,1=审核失败,2=进行中,3=审核成功")
    private String auditStatus;

    /** posp商户编号*/
    @Excel(name = "posp商户编号")
    private String merchantCode;

    /** 商户资料是否完成 0:已完成 1：未完成 */
    @Excel(name = "商户资料是否完成 0:已完成 1：未完成")
    private String infoCompleted;

    /** 商户等级0：注册，
    1：基础？，
    2：？认证，
    3：企业 */
    @Excel(name = "商户等级0：注册， 1：基础？， 2：？认证， 3：企业")
    private String merchantLevel;

    /** 当前商户注册情况描述 */
    @Excel(name = "当前商户注册情况描述（失败原因）")
    private String merchantDesc;

    /** 商户修改结果,
    0：自动审核中,
    1：修改失败,
    2：转人工审核,
    3：审核成功  */
    @Excel(name = "商户修改结果, 0：自动审核中, 1：修改失败, 2：转人工审核, 3：审核成功 ")
    private String updateResult;

    /** 商户密钥 posp返回 */
    @Excel(name = "商户密钥 posp返回")
    private String merchantKey;

    /** sn */
    @Excel(name = "sn")
    private String sn;

    /** 授权码 posp返回 */
    @Excel(name = "授权码 posp返回")
    private String validationValue;
    @Excel(name = "所属代理")
    @TableField(exist = false)
    private String merchName;
    /** TMK posp 返回 */
    @Excel(name = "TMK posp 返回")
    private String masterKeys;

    /** 用户名
    （1、唯一；每次请求都要换一个新的，因为涉及到其他部门接口，不是一个事务内
    2、用uuid即可 */
    @Excel(name = "用户名 " , readConverterExp = "用户名（1、唯一；每次请求都要换一个新的，因为涉及到其他部门接口，不是一个事务内 2、用uuid即可")
    private String userName;

    /** 注册手机 */
    @Excel(name = "注册手机")
    private String phone;

    /** 注册时间 */
    @Excel(name = "注册时间")
    private String registerTime;

    /** 法人姓名 */
    @Excel(name = "法人姓名")
    private String legalPersonName;

    /** 法人证件类型,
    1：身份证,
    2：港澳通行证,
    3：台湾身份证,
    4：HK身份证,
    5：MC身份证,
    6：护照,
    7：居住证,
    9：其他法定证件（如提供身份证以外资料，进件时将转人工审核） */
    @Excel(name = "法人证件类型, 1：身份证, 2：港澳通行证, 3：台湾身份证, 4：HK身份证, 5：MC身份证, 6：护照, 7：居住证, 9：其他法定证件" , readConverterExp = "如=提供身份证以外资料，进件时将转人工审核")
    private String certificateType;

    /** 法人证件号码 */
    @Excel(name = "法人证件号码")
    private String certificateNo;

    /** 证件有效期开始日期 */
    @Excel(name = "证件有效期开始日期")
    private String certificateStartDate;

    /** 证件有效期截止日期 */
    @Excel(name = "证件有效期截止日期")
    private String certificateEndDate;

    /** 证件人脸面 */
    @Excel(name = "证件人脸面")
    private String certificatesFrontPic;
    //  private MultipartFile certificatesFrontPicFile; //posp用的

    /** 证件国徽面 */
    @Excel(name = "证件国徽面")
    private String certificatesBackPic;
    //  private MultipartFile certificatesBackPicFile;  //posp用的
    /** 法人人脸识别留存照片（与手持身份证照片两者必须有一个不为空 */
    @Excel(name = "法人人脸识别留存照片" , readConverterExp = "法人人脸识别留存照片（与手持身份证照片两者必须有一个不为空")
    private String facePic;
    //  private MultipartFile facePicFile;  //posp用的

    /** 手持身份证照片（与法人人脸识别留存照片两者必须有一个不为空） */
    @Excel(name = "手持身份证照片" , readConverterExp = "与=法人人脸识别留存照片两者必须有一个不为空")
    private String idcardHandPic;
    // private MultipartFile idcardHandPicFile;
    @Excel(name = "绑定状态",readConverterExp ="-0=未绑定,1=已绑定")
    private String whetherBinding;

    /** 申请产品类型 具体类型：POS,SAOMA,SHOUSHUA */
    @Excel(name = "申请产品类型 具体类型：POS,SAOMA,SHOUSHUA")
    private String productType;

    /** 商户类型,
    1：个人,
    2：个体,
    3：企业 */
    @Excel(name = "商户类型, 1：个人, 2：个体, 3：企业")
    private String merchantType;

    /** 商户名称（固定格式：前缀”商户_“+法人名称） */
    @Excel(name = "商户名称" , readConverterExp = "固=定格式：前缀”商户_“+法人名称")
    private String merchantName;

    /** 商户简写 */
    @Excel(name = "商户简写")
    private String merchantShortHand;

    /** 所属行业mcc码 */
    @Excel(name = "所属行业mcc码")
    private String mccCode;

    /** 商户省 */
    @Excel(name = "商户省")
    private String provinceNo;

    /** 商户市 */
    @Excel(name = "商户市")
    private String cityNo;

    /** 商户区 */
    @Excel(name = "商户区")
    private String areaNo;

    /** 商户地址 */
    @Excel(name = "商户地址")
    private String address;

    /** 联系人（固定为法人名称 */
    @Excel(name = "联系人" , readConverterExp = "联系人（固定为法人名称")
    private String applicant;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhoneNo;

    /** 客服电话 */
//    @TableField(value = "client_service_phone_no")
    private String clientServicePhoneNo;

    /** 商户子类型：
    1：小微A;
    2：小微B;
    3：小微C;
    4：小微D
 */
    @Excel(name = "商户子类型： 1：小微A; 2：小微B; 3：小微C; 4：小微D ")
    private String merchantSubType;

    /** 结算账户类型
    2：企业
    1：个人 */
    @Excel(name = "结算账户类型 2：企业 1：个人")
    private String bankCardAccountType;

    /** 银行账号 */
    @Excel(name = "结算银行账号")
    private String bankCardAccount;

    /** 银行卡照片 */
    @Excel(name = "银行卡照片")
    private String bankCardPic;
    //  private MultipartFile bankCardPicFile;

    /** 银行编码 */
    @Excel(name = "银行编码")
    private String bankCode;

    /** 开户银行省份 */
    @Excel(name = "开户银行省份")
    private String bankProvince;

    /** 开户银行城市 */
    @Excel(name = "开户银行城市")
    private String bankCity;

    /** 开户行网点 */
    @Excel(name = "开户行网点")
    private String bankSite;

    /** 开户支行联行号 */
    @Excel(name = "开户支行联行号")
    private String unionpayCode;

    /** 银行卡预留手机号 */
    @Excel(name = "银行卡预留手机号")
    private String bankCardPhone;

    /** 开户名 */
    @Excel(name = "开户名")
    private String bankCardHolder;

    /** 商户活体检测地址 */
    private String activeAddress;

    /** 商户活体检测地址纬度 */
    private String activeLatitude;

    /** 商户活体检测地址经度 */
    private String activeLongitude;

    /** 商户注册地址 */
    private String registerAddress;

    /** 商户注册地址纬度 */
    private String registerLatitude;

    /** 商户注册地址经度 */
    private String registerLongitude;

    /** 是否提交费率  0未提交  1已提交 */
    private String whetherSubmit;
    @TableField(exist = false)
    private String agentId;

    /** 渠道 1 乐刷 */
    private String channel;
    private String channelName;
    private String whetherPhoto;  // 是否提交签名图片 0 未提交  1已提交
    private String whetherVideo;   //是否提交视频 0 未提交  1已提交
    private Date updateTime;
    private String provinceName;  // 省名称
    private String cityName;  // 市名称
    private String areaName;  // 区名称
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();
    private String settleAccountStatus;//修改结算卡状态
    @TableField(exist = false)
    private String beginDate;
    @TableField(exist = false)
    private String endDate;
    @TableField(exist = false)
    private int pageBegin;
    @TableField(exist = false)
    private int pageEnd;
    @TableField(exist = false)
    private String beginTime;
    @TableField(exist = false)
    private String endTime;
    @TableField(exist = false)
    private String beginTime1;
    @TableField(exist = false)
    private String endTime1;
    @TableField(exist = false)
    private String idCardLastSix;  // 身份证后6位
    @TableField(exist = false)
    private String isYouYa;  // 是否有押
    @TableField(exist = false)
    private String enable;  // 是否启用
    @TableField(exist = false)
    private String newFeeName;  // 是否启用
    //    开店宝字段
    @TableField(exist = false)
    private String customerStaus;  // 审核结果1失败3成功
    @TableField(exist = false)
    private String checkMsg;  // 审核失败原因
    @TableField(exist = false)
    private String bindStatus;  // 1绑0未绑
    @TableField(exist = false)
    private String activeStatus;//线上pos激活标识 1激活
    @TableField(exist = false)
    private String khbUserId;//
    @TableField(exist = false)
    private String khbGroupId;//
    @TableField(exist = false)
    private String khbAccessToken;//
    @TableField(exist = false)
    private String acqMerId;  // 渠道商户号
    private String onLine;  // 渠道商户号
    @TableField(exist = false)
    private String img;  // 图片bas64编码
    @TableField(exist = false)
    private String faceAuthFlag;
    @TableField(exist = false)
    private String faceAuthOrderNo;
    //企业进件字段
    @TableField(exist = false)
    private String settAccMark;
    @TableField(exist = false)
    private String busNature;
    @TableField(exist = false)
    private String busRegNo;
    @TableField(exist = false)
    private String busRegType;
    @TableField(exist = false)
    private String receiptProImg;
    @TableField(exist = false)
    private String busiLicenseImg;
    @TableField(exist = false)
    private String cashDeskImg;
    @TableField(exist = false)
    private String busiPlaceImg;
    @TableField(exist = false)
    private String busiDoorImg;
    @TableField(exist = false)
    private String bankAboveImg;
    @TableField(exist = false)
    private String settleProImg;
    @TableField(exist = false)
    private String otherImg1;
    @TableField(exist = false)
    private String busRegStartDt;
    @TableField(exist = false)
    private String busRegEndDt;
    @TableField(exist = false)
    private String legalpersonIsSett;
    @TableField(exist = false)
    private String settCrpNo;
    @TableField(exist = false)
    private String settCrpAboveImg;
    @TableField(exist = false)
    private String settCrpBelovImg ;
    @TableField(exist = false)
    private String nonCrpNmSettleProImg;
    //乐刷新增-2024-01-18
    private String shopInsidePlacePic;//店内照
    private String shopGatePic;//门头照
    private String cashierDeskPic;//收银台照
    @TableField(exist = false)
    private String mccCd;
    @TableField(exist = false)
    private String mcc;//乐刷行业类别
    @TableField(exist = false)
    private String xwSigning;//开店宝小微签约标识
    @TableField(exist = false)
    private String qySigning;//开店宝企业签约标识
    @TableField(exist = false)
    private String reqNo;
    @TableField(exist = false)
    private String bankName;
    @TableField(exist = false)
    private String appletSign;// 小程序进件标识 回显用


    private String businessLicenseNo;  // 社会统一信用码
    private String businessLicenseName;   //  营业执照名称
    private String businessLicenseStartDate;  //  开始日期（例：1949-10-01）
    private String businessLicenseEndDate;  //  结束日期（例：1949-10-01）
    private String businessCreditLicensePic;  //  营业执照照片
    private String businessLicenseType;
    private String bankCardBackPic;// 银行卡反面

    @TableField(exist = false)
    private String merchType;// 0直属商户 1渠道商户


    private Long userId;

    private BigDecimal todayTransAmount;// 今日

    private BigDecimal thisMonthTransAmount; // 本月

    private BigDecimal lastMonthTransAmount; // 上月

    private BigDecimal thisYearTransAmount; // 今年

    private BigDecimal totalTransAmount; // 累计

    private Long deptId; // 累计


    @TableField(exist = false)
    private List<Long> merchIds;

    @TableField(exist = false)
    private int count;

    @TableField(exist = false)
    private int pageNo;

    @TableField(exist = false)
    private int pageSize;

    @TableField(exist = false)
    private String sortType;

    @TableField(exist = false)
    private String searchStr;
    @TableField(exist = false)
    private String activeTime;

    private Long customerCashBackId;
    private String customerCashBackStatus;
    private Double customerCashBackTotalAmount;



    private String isSilence;// 沉默商户 10-常规商户 30-30天沉默 60-60天沉默 90-90天沉默
    private int silenceDays;// 沉默天数
    @TableField(exist = false)
    private String queryStr;

    private String isUnActive;// 未激活0   激活1
    private int unActiveDays;//未激活天数

    private String isFailureActive;//0伪激活1激活
    private int failureActiveDays;//伪激活天数

    private Date secondFlowReceiveTime;


}
